package com.quan.hr.entity;

import com.baomidou.mybatisplus.annotation.*;

import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.time.LocalDateTime;

import org.springframework.format.annotation.DateTimeFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import com.quan.commons.vo.BaseEntity;

/**
 * 员工信息
 *
 * @author yhaoquan
 * @email yhaoquan@163.com
 * @date 2023-02-18 17:12:34
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("hr_employee")
public class HrEmployee extends BaseEntity implements Serializable{
private static final long serialVersionUID=1L;

    /**
     * ID
     */
    @TableId
    private Long id;

    /**
     * 部门ID
     */
    @NotNull(message = "部门ID不能为空")
    private Long deptId;

    /**
     * 岗位ID
     */
    @NotNull(message = "岗位ID不能为空")
    private Long postId;

    /**
     * 工号
     */
    @NotNull(message = "工号不能为空")
    private String workNo;

    /**
     * 姓名
     */
    @NotNull(message = "姓名不能为空")
    private String name;

    /**
     * 性别【1：男，2：女】
     */
    @NotNull(message = "性别不能为空")
    private String sex;

    /**
     * 入职时间
     */
    @NotNull(message = "入职时间不能为空")
    @DateTimeFormat(pattern = "yyyy-MM-dd ")
    private LocalDate joinDate;

    /**
     * 离职日期
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    @DateTimeFormat(pattern = "yyyy-MM-dd ")
    private LocalDate quitDate;

    /**
     * 在职状态【1：在职，2：离职，3：退休，4：停薪留职，5：退休返聘】
     */
    @NotNull(message = "在职状态不能为空")
    private String status;

    /**
     * 工作状态【1：待机，2：在项目中】
     */
    @NotNull(message = "工作状态不能为空")
    private String workStatus;

    /**
     * 来源
     */
    private String source;

    /**
     * 毕业院校
     */
    private String university;

    /**
     * 专业
     */
    private String major;

    /**
     * 学历
     */
    private String educationLevel;

    /**
     * 毕业时间
     */
    private String graduatTime;

    /**
     * 日语等级
     */
    private String japaneseGrade;

    /**
     * 英语等级
     */
    private String englishGrade;

    /**
     * 身份证号码
     */
    private String idCardNo;

    /**
     * 籍贯
     */
    private String nativePlace;

    /**
     * 出生年月日
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd ")
    private LocalDate birthday;

    /**
     * 婚姻状况【1：未婚，2：已婚，3：离异】
     */
    private String marriageStatus;

    /**
     * 户口所在地
     */
    private String domicilePlace;

    /**
     * 户口性质
     */
    private String domicileProp;

    /**
     * 联系电话
     */
    @NotNull(message = "联系电话不能为空")
    private String telephone;

    /**
     * 家庭电话
     */
    private String phoneNo;

    /**
     * 邮箱地址
     */
    private String email;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 逻辑删除【0：正常，1：删除】
     */
    private Integer deleted;

    /**
     * 更新人
     */
    private String uname;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime ctime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime utime;

}
